package br.com.kizura.service;

import java.util.Collections;
import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import br.com.kizura.model.PessoaDao;
import br.com.kizura.model.beans.Pessoa;
import br.com.kizura.service.qualifiers.PersistenciaManager;

@RequestScoped
public class PessoaServiceImpl implements PessoaService{

	private static final long serialVersionUID = 1L;

	@PersistenciaManager
	@Inject
	private EntityManager em;
	
	private PessoaDao dao;
	
	public PessoaServiceImpl() {
		super();
		dao = new PessoaDao();
		dao.setEm(em);
	}

	public void save(Pessoa pessoa) {
		dao.save(pessoa);
	}

	public void update(Pessoa pessoa) {
		dao.update(pessoa);
	}

	public void delete(Pessoa pessoa) {
		dao.delete(pessoa);
	}

	public Pessoa findById(int key) {
		return dao.findById(key);
	}

	public List<Pessoa> findAll() {
		return dao.findByAll();
	}

	public List<Pessoa> findByName(String name) {
		
		TypedQuery<Pessoa> query = em.createNamedQuery("findByNome", Pessoa.class);
		query.setParameter("NAME", name + "%");
		
		try {
			return query.getResultList();
		} catch (Exception e) {
			return Collections.emptyList();
		}
		
	}
	
}
